//Universidad del Valle de Guatemala
//Algoritmos y Estructuras de Datos
//Hoja de Trabajo #5
//David Ytzen Hsieh Lo #08225

import java.util.Comparator;
import java.util.PriorityQueue;


/**
 *
 * @author David Hsieh
 * @param <E>
 */
public class ColaPJCF<E> implements InterfazColasP<E> {

    PriorityQueue<Nodo> cola;
    

    /**
     *
     * @param limite
     */
    public ColaPJCF(int limite){
        cola= new PriorityQueue(limite, new Comparator<Nodo<E>>() {

            public int compare(Nodo<E> o1, Nodo<E> o2) {
                int clave1 = (o1.getClave());
                int clave2 = (o2.getClave());

                //Debido a que se pidió que el orden de la cola fuera inversa (el mayor sale primero)
                //y el PriorityQueue de Java Collection Framework es de orden natural, hacemos el
                //compare diferente al que hicimos con el de Heaps, siendo que si es menor, devuelva 1
                // y si es mayor devuelva -1.
                if(clave1 < clave2)
                    return 1;
                else if(clave2 < clave1)
                    return -1;

                return 0;
                

            }
        });
    }
    

    /**
     *
     * @param key
     * @param dato
     * @return
     */
    public boolean insertar(int key, E dato) {
        Nodo<E> nodo = new Nodo(key,dato);
        return cola.add(nodo);
        
        
    }

    /**
     *
     * @return
     */
    public E remover() {
        return (E) cola.remove().getDato();
    }

    /**
     *
     * @return
     */
    public boolean vacio() {
        return cola.isEmpty();
    }



     
    
}
